home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / WhatView / Sources / WhatIsPrefs.e < prev    next >
Encoding:
Text File  |  1995-04-03  |  38.7 KB  |  851 lines

  1. /*=========================================================================================*/
  2. /* Source code generate by Gui2E v0.1 © 1994 NasGûl                                        */
  3. /*=========================================================================================*/
  4. /*"Peps Header"*/
  5. /*======<<< Peps Header >>>======
  6.  PRGVERSION '0'
  7.  ================================
  8.  PRGREVISION '13'
  9.  ================================
  10.  AUTHOR      'NasGûl'
  11.  ===============================*/
  12. /*======<<<   History   >>>======
  13.  Gestion du fichier s:filetypes v 0.0
  14.  ====================================
  15.  Ajouts des commentaires        v 0.1
  16.  ====================================
  17.  Bug fixé dans la libération de
  18.  la liste [p_CleanTypeList()]   v 0.11
  19.  ====================================
  20.  Bug de p_FileRequester() fixé  v 0.12
  21.  ====================================
  22.  Localisation                   v 0.13
  23.  ===============================*/
  24. /**/
  25. OPT OSVERSION=37,LARGE
  26. CONST DEBUG=FALSE
  27. /*"Module Definitions"*/
  28. MODULE 'intuition/intuition','gadtools','libraries/gadtools','intuition/gadgetclass','intuition/screens',
  29.        'graphics/text','exec/lists','exec/nodes','exec/ports','eropenlib','utility/tagitem',
  30.        'intuition/intuitionbase'
  31. MODULE 'asl','libraries/asl'
  32. MODULE 'mheader'
  33. /**/
  34. /*"Erreurs Definitions"*/
  35. ENUM ER_NONE,ER_LOCKSCREEN,ER_VISUAL,ER_CONTEXT,ER_MENUS,ER_GADGET,ER_WINDOW
  36. CONST F_LOAD=0,
  37.       F_SAVE=1
  38. /**/
  39. /*"Objets definitions"*/
  40. OBJECT infotype
  41.     node:ln
  42.     subtype:LONG          /*== STRING (14) ==*/
  43.     insertafter:LONG      /*== STRING (18) ==*/
  44.     iconname:LONG         /*== STRING (22) ==*/
  45.     namepattern:LONG      /*== STRING (26) ==*/
  46.     optnamepattern:LONG   /*== STRING (30)==*/
  47.     comparebytes:LONG     /*== PTR TO lh (34) ==*/
  48.     searchbyte:LONG       /*== STRING (38) ==*/
  49.     searchpattern:LONG    /*== STRING (42)==*/
  50.     matchpattern:LONG     /*== STRING (46)==*/
  51.     comment:LONG          /*== STRING (50) ==*/
  52. ENDOBJECT
  53. /**/
  54. /*"Golbals Definitions"*/
  55. /*"Window Definitions"*/
  56. DEF screen:PTR TO screen,
  57.     visual=NIL,
  58.     tattr:PTR TO textattr,
  59.     reelquit=FALSE,
  60.     offy,offx
  61. /*=======================================
  62.  = wip Definitions
  63.  =======================================*/
  64. DEF wip_window=NIL:PTR TO window
  65. DEF wip_glist=NIL
  66. /*==================*/
  67. /*     Gadgets      */
  68. /*==================*/
  69. CONST GA_G_TYPELIST=0
  70. CONST GA_G_SUBTYPE=1
  71. CONST GA_G_INSERTAFTER=2
  72. CONST GA_G_ICONNAME=3
  73. CONST GA_G_NAMEPATTERN=4
  74. CONST GA_G_OPTNAMEPATTERN=5
  75. CONST GA_G_COMPAREBYTES=6
  76. CONST GA_G_COMPAREBYTESSTR=7
  77. CONST GA_G_SEARCHBYTES=8
  78. CONST GA_G_SEARCHPATTERN=9
  79. CONST GA_G_MATCHPATTERN=10
  80. CONST GA_G_COMMENT=20
  81. CONST GA_G_ADDTYPES=11
  82. CONST GA_G_DELTYPES=12
  83. CONST GA_G_ADDCOMPAREBYTES=13
  84. CONST GA_G_DELCOMPAREBYTES=14
  85. CONST GA_G_LOAD=15
  86. CONST GA_G_SAVE=16
  87. CONST GA_G_SAVEAS=17
  88. CONST GA_G_QUIT=18
  89. CONST GA_G_TYPESSTR=19
  90. /*=============================
  91.  = Gadgets labels of wip
  92.  =============================*/
  93. DEF g_typelist
  94. DEF g_subtype
  95. DEF g_insertafter
  96. DEF g_iconname
  97. DEF g_namepattern
  98. DEF g_optnamepattern
  99. DEF g_comparebytes
  100. DEF g_comparebytesstr
  101. DEF g_searchbytes
  102. DEF g_searchpattern
  103. DEF g_matchpattern
  104. DEF g_comment
  105. DEF g_addtypes
  106. DEF g_deltypes
  107. DEF g_addcomparebytes
  108. DEF g_delcomparebytes
  109. DEF g_load
  110. DEF g_save
  111. DEF g_saveas
  112. DEF g_quit
  113. DEF g_typesstr
  114. /**/
  115. /*"Applications definitions"*/
  116. DEF motcle:PTR TO LONG
  117. DEF freeinfotype
  118. DEF typelist:PTR TO lh
  119. DEF curinfotype=0
  120. DEF curcompbyte=0
  121. /**/
  122. /**/
  123. /*"Pmodules definitions"*/
  124. PMODULE 'WhatView_Cat'
  125. PMODULE 'WhatIsPrefsList'
  126. PMODULE 'PModules:pListView'
  127. PMODULE 'Pmodules:DWriteF'
  128. PMODULE 'Pmodules:PMHeader'
  129. /**/
  130. /*"Window Procedures"*/
  131. /*"p_OpenLibraries()"*/
  132. PROC p_OpenLibraries() HANDLE 
  133.     dWriteF(['p_OpenLibraries()\n'],0)
  134.     IF (intuitionbase:=OpenLibrary('intuition.library',37))=NIL THEN Raise(ER_INTUITIONLIB)
  135.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN Raise(ER_GADTOOLSLIB)
  136.     IF (gfxbase:=OpenLibrary('graphics.library',37))=NIL THEN Raise(ER_GRAPHICSLIB)
  137.     IF (aslbase:=OpenLibrary('asl.library',37))=NIL THEN Raise(ER_ASLLIB)
  138.     Raise(ER_NONE)
  139. EXCEPT
  140.     RETURN exception
  141. ENDPROC
  142. /**/
  143. /*"p_CloseLibraries()"*/
  144. PROC p_CloseLibraries()  
  145.     dWriteF(['p_CloseLibraries()\n'],0)
  146.     IF aslbase THEN CloseLibrary(aslbase)
  147.     IF gfxbase THEN CloseLibrary(gfxbase)
  148.     IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  149.     IF intuitionbase THEN CloseLibrary(intuitionbase)
  150. ENDPROC
  151. /**/
  152.  
  153. /*"p_SetUpScreen()"*/
  154. PROC p_SetUpScreen() HANDLE 
  155.     dWriteF(['p_SetUpScreen()\n'],0)
  156.     IF (screen:=LockPubScreen(p_LockActivePubScreen()))=NIL THEN Raise(ER_LOCKSCREEN)
  157.     IF (visual:=GetVisualInfoA(screen,NIL))=NIL THEN Raise(ER_VISUAL)
  158.     offy:=screen.wbortop+Int(screen.rastport+58)-10
  159.     Raise(ER_NONE)
  160. EXCEPT
  161.     RETURN exception
  162. ENDPROC
  163. /**/
  164. /*"p_SetDownScreen()"*/
  165. PROC p_SetDownScreen() 
  166.     dWriteF(['p_SetDownSrceen()\n'],0)
  167.     IF visual THEN FreeVisualInfo(visual)
  168.     IF screen THEN UnlockPubScreen(NIL,screen)
  169. ENDPROC
  170. /**/
  171. /*"p_LockActivePubScreen()"*/
  172. PROC p_LockActivePubScreen()
  173.     DEF ps:PTR TO pubscreennode
  174.     DEF s:PTR TO screen
  175.     DEF sn:PTR TO ln
  176.     DEF psl:PTR TO lh
  177.     DEF ret=NIL
  178.     DEF myintui:PTR TO intuitionbase
  179.     dWriteF(['p_LockActivePubScreen()\n'],0)
  180.     ret:=NIL
  181.     myintui:=intuitionbase
  182.     s:=myintui.activescreen
  183.     IF psl:=LockPubScreenList()
  184.         sn:=psl.head
  185.         WHILE sn
  186.             ps:=sn
  187.             IF sn.succ<>0
  188.                 IF ps.screen=s THEN ret:=sn.name
  189.             ENDIF
  190.             sn:=sn.succ
  191.         ENDWHILE
  192.         UnlockPubScreenList()
  193.     ENDIF
  194.     RETURN ret
  195. ENDPROC
  196. /**/
  197.  
  198. /*"p_InitwipWindow()"*/
  199. PROC p_InitwipWindow() HANDLE 
  200.     DEF g:PTR TO gadget
  201.     dWriteF(['p_InitwipWindow()\n'],0)
  202.     IF (g:=CreateContext({wip_glist}))=NIL THEN Raise(ER_CONTEXT)
  203.     IF (g_typelist:=CreateGadgetA(LISTVIEW_KIND,g,[offx+24,offy+28,121,64,'Types',tattr,0,4,visual,0]:newgadget,[GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  204.     IF (g_subtype:=CreateGadgetA(STRING_KIND,g_typelist,[offx+284,offy+16,145,13,'SubType',tattr,1,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  205.     IF (g_insertafter:=CreateGadgetA(STRING_KIND,g_subtype,[offx+284,offy+31,145,13,'InsertAfter',tattr,2,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  206.     IF (g_iconname:=CreateGadgetA(STRING_KIND,g_insertafter,[offx+284,offy+46,145,13,'IconName',tattr,3,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  207.     IF (g_namepattern:=CreateGadgetA(STRING_KIND,g_iconname,[offx+284,offy+61,145,13,'NamePattern',tattr,4,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  208.     IF (g_optnamepattern:=CreateGadgetA(STRING_KIND,g_namepattern,[offx+284,offy+76,145,13,'OptNamePattern',tattr,5,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  209.     IF (g_comparebytes:=CreateGadgetA(LISTVIEW_KIND,g_optnamepattern,[offx+459,offy+27,165,48,'CompareBytes',tattr,6,4,visual,0]:newgadget,[GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  210.     IF (g_comparebytesstr:=CreateGadgetA(STRING_KIND,g_comparebytes,[offx+458,offy+74,165,13,'',tattr,7,0,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  211.     IF (g_searchbytes:=CreateGadgetA(STRING_KIND,g_comparebytesstr,[offx+284,offy+91,145,13,'SearchBytes',tattr,8,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  212.     IF (g_searchpattern:=CreateGadgetA(STRING_KIND,g_searchbytes,[offx+284,offy+106,145,13,'SearchPattern',tattr,9,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  213.     IF (g_matchpattern:=CreateGadgetA(STRING_KIND,g_searchpattern,[offx+284,offy+121,145,13,'MatchPattern',tattr,10,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)    
  214.     IF (g_comment:=CreateGadgetA(STRING_KIND,g_matchpattern,[offx+170,offy+135,259,13,'',tattr,20,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  215.     IF (g_addtypes:=CreateGadgetA(BUTTON_KIND,g_comment,[offx+24,offy+108,61,11,'Add',tattr,11,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  216.     IF (g_deltypes:=CreateGadgetA(BUTTON_KIND,g_addtypes,[offx+86,offy+108,61,11,'Del',tattr,12,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  217.     IF (g_addcomparebytes:=CreateGadgetA(BUTTON_KIND,g_deltypes,[offx+458,offy+91,61,11,'Add',tattr,13,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  218.     IF (g_delcomparebytes:=CreateGadgetA(BUTTON_KIND,g_addcomparebytes,[offx+562,offy+91,61,11,'Del',tattr,14,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  219.     IF (g_load:=CreateGadgetA(BUTTON_KIND,g_delcomparebytes,[offx+461,offy+114,77,13,get_WhatView_string(MSGWHATISPREFS_LOAD),tattr,15,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  220.     IF (g_save:=CreateGadgetA(BUTTON_KIND,g_load,[offx+549,offy+114,77,13,get_WhatView_string(MSGWHATISPREFS_SAVE),tattr,16,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  221.     IF (g_saveas:=CreateGadgetA(BUTTON_KIND,g_save,[offx+461,offy+129,77,13,get_WhatView_string(MSGWHATISPREFS_SAVEAS),tattr,17,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  222.     IF (g_quit:=CreateGadgetA(BUTTON_KIND,g_saveas,[offx+549,offy+129,77,13,get_WhatView_string(MSGWHATISPREFS_QUIT),tattr,18,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  223.     IF (g_typesstr:=CreateGadgetA(STRING_KIND,g_quit,[offx+24,offy+92,121,13,'',tattr,19,0,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  224.     Raise(ER_NONE)
  225. EXCEPT
  226.     RETURN exception
  227. ENDPROC
  228. /**/
  229. /*"p_RenderwipWindow()"*/
  230. PROC p_RenderwipWindow() 
  231.     DEF c:PTR TO infotype
  232.     DEF cb:PTR TO ln
  233.     DEF n:PTR TO ln
  234.     dWriteF(['p_RenderwipWindow()\n'],0)
  235.     c:=p_GetAdrNode(typelist,curinfotype)
  236.     n:=c
  237.     IF p_EmptyList(typelist)<>-1
  238.         Gt_SetGadgetAttrsA(g_typelist,wip_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,curinfotype,GTLV_LABELS,typelist,TAG_DONE])
  239.         Gt_SetGadgetAttrsA(g_typesstr,wip_window,NIL,[GTST_STRING,n.name,TAG_DONE])
  240.         Gt_SetGadgetAttrsA(g_subtype,wip_window,NIL,[GTST_STRING,IF c.subtype<>0 THEN c.subtype ELSE '',TAG_DONE])
  241.         Gt_SetGadgetAttrsA(g_insertafter,wip_window,NIL,[GTST_STRING,IF c.insertafter<>0 THEN c.insertafter ELSE '',TAG_DONE])
  242.         Gt_SetGadgetAttrsA(g_iconname,wip_window,NIL,[GTST_STRING,IF c.iconname<>0 THEN c.iconname ELSE '',TAG_DONE])
  243.         Gt_SetGadgetAttrsA(g_namepattern,wip_window,NIL,[GTST_STRING,IF c.namepattern<>0 THEN c.namepattern ELSE '',TAG_DONE])
  244.         Gt_SetGadgetAttrsA(g_optnamepattern,wip_window,NIL,[GTST_STRING,IF c.optnamepattern<>0 THEN c.optnamepattern ELSE '',TAG_DONE])
  245.         IF p_EmptyList(c.comparebytes)<>-1
  246.             cb:=p_GetAdrNode(c.comparebytes,curcompbyte)
  247.             Gt_SetGadgetAttrsA(g_comparebytes,wip_window,NIL,[GA_DISABLED,FALSE,GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,curcompbyte,GTLV_LABELS,c.comparebytes,TAG_DONE])
  248.             Gt_SetGadgetAttrsA(g_comparebytesstr,wip_window,NIL,[GA_DISABLED,FALSE,GTST_STRING,cb.name,TAG_DONE])
  249.             Gt_SetGadgetAttrsA(g_delcomparebytes,wip_window,NIL,[GA_DISABLED,FALSE,TAG_DONE])
  250.         ELSE
  251.             Gt_SetGadgetAttrsA(g_comparebytes,wip_window,NIL,[GA_DISABLED,TRUE,GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,TAG_DONE])
  252.             Gt_SetGadgetAttrsA(g_comparebytesstr,wip_window,NIL,[GA_DISABLED,TRUE,GTST_STRING,'',TAG_DONE])
  253.             Gt_SetGadgetAttrsA(g_delcomparebytes,wip_window,NIL,[GA_DISABLED,TRUE,TAG_DONE])
  254.         ENDIF
  255.         Gt_SetGadgetAttrsA(g_searchbytes,wip_window,NIL,[GTST_STRING,IF c.searchbyte<>0 THEN c.searchbyte ELSE '',TAG_DONE])
  256.         Gt_SetGadgetAttrsA(g_searchpattern,wip_window,NIL,[GTST_STRING,IF c.searchpattern<>0 THEN c.searchpattern ELSE '',TAG_DONE])
  257.         Gt_SetGadgetAttrsA(g_matchpattern,wip_window,NIL,[GTST_STRING,IF c.matchpattern<>0 THEN c.matchpattern ELSE '',TAG_DONE])
  258.         Gt_SetGadgetAttrsA(g_comment,wip_window,NIL,[GTST_STRING,IF StrLen(c.comment)<>0 THEN c.comment ELSE '',TAG_DONE])
  259.     ELSE
  260.         Gt_SetGadgetAttrsA(g_typelist,wip_window,NIL,[GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,TAG_DONE])
  261.     ENDIF
  262.     DrawBevelBoxA(wip_window.rport,offx+440,offy+108,201,41,[GT_VISUALINFO,visual,TAG_DONE])
  263.     DrawBevelBoxA(wip_window.rport,offx+440,offy+12,201,93,[GT_VISUALINFO,visual,TAG_DONE])
  264.     DrawBevelBoxA(wip_window.rport,offx+8,offy+12,145,137,[GT_VISUALINFO,visual,TAG_DONE])
  265.     DrawBevelBoxA(wip_window.rport,offx+156,offy+12,281,137,[GT_VISUALINFO,visual,TAG_DONE])
  266.     RefreshGList(g_typelist,wip_window,NIL,-1)
  267.     Gt_RefreshWindow(wip_window,NIL)
  268. ENDPROC
  269. /**/
  270. /*"p_OpenwipWindow()"*/
  271. PROC p_OpenwipWindow() HANDLE 
  272.     dWriteF(['p_OpenwipWindow()\n'],0)
  273.     IF (wip_window:=OpenWindowTagList(NIL,
  274.                       [WA_LEFT,127,
  275.                        WA_TOP,46,
  276.                        WA_WIDTH,offx+649,
  277.                        WA_HEIGHT,offy+151,
  278.                        WA_IDCMP,$200+$40+$20+$4+$400000,
  279.                        WA_FLAGS,$102E,
  280.                        WA_GADGETS,wip_glist,
  281.                        WA_CUSTOMSCREEN,screen,
  282.                        WA_TITLE,title_req,
  283.                        WA_SCREENTITLE,'Made With GadToolsBox V2.0b © 1991-1993',
  284.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  285.     p_RenderwipWindow()
  286.     Raise(ER_NONE)
  287. EXCEPT
  288.     RETURN exception
  289. ENDPROC
  290. /**/
  291. /*"p_RemwipWindow()"*/
  292. PROC p_RemwipWindow() 
  293.     dWriteF(['p_RemwipWindow()\n'],0)
  294.     IF wip_window THEN CloseWindow(wip_window)
  295.     IF wip_glist THEN FreeGadgets(wip_glist)
  296. ENDPROC
  297. /**/
  298. /**/
  299. /*"Message Procedures"*/
  300. /*"p_LookAllMessage()"*/
  301. PROC p_LookAllMessage() 
  302.     DEF sigreturn
  303.     DEF wipport:PTR TO mp
  304.     IF wip_window THEN wipport:=wip_window.userport ELSE wipport:=NIL
  305.     sigreturn:=Wait(Shl(1,wipport.sigbit) OR
  306.                     $F000)
  307.     IF (sigreturn AND Shl(1,wipport.sigbit))
  308.         p_LookwipMessage()
  309.     ENDIF
  310.     IF (sigreturn AND $F000)
  311.         reelquit:=TRUE
  312.     ENDIF
  313. ENDPROC
  314. /**/
  315. /*"p_LookwipMessage()"*/
  316. PROC p_LookwipMessage() 
  317.    DEF mes:PTR TO intuimessage
  318.    DEF g:PTR TO gadget
  319.    DEF gstr:PTR TO stringinfo
  320.    DEF type=0,infos=NIL
  321.    DEF tinfotype:PTR TO infotype,pv[80]:STRING
  322.    DEF nn:PTR TO ln
  323.    DEF refresh=FALSE
  324.    WHILE mes:=Gt_GetIMsg(wip_window.userport)
  325.        type:=mes.class
  326.        SELECT type
  327.            CASE IDCMP_MENUPICK
  328.               infos:=mes.code
  329.               SELECT infos
  330.               ENDSELECT
  331.            /*CASE IDCMP_GADGETDOWN*/
  332.            CASE IDCMP_CLOSEWINDOW
  333.               reelquit:=TRUE
  334.            CASE IDCMP_GADGETUP
  335.               g:=mes.iaddress
  336.               infos:=g.gadgetid
  337.               gstr:=g.specialinfo
  338.               SELECT infos
  339.                   CASE GA_G_TYPELIST
  340.                     curinfotype:=mes.code
  341.                     tinfotype:=curinfotype
  342.                     refresh:=TRUE
  343.                   CASE GA_G_SUBTYPE
  344.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  345.                     StringF(pv,'\s',gstr.buffer)
  346.                     IF tinfotype.subtype<>0 THEN DisposeLink(tinfotype.subtype)
  347.                     IF EstrLen(pv)<>0
  348.                         tinfotype.subtype:=String(EstrLen(pv))
  349.                         StrCopy(tinfotype.subtype,pv,EstrLen(pv))
  350.                     ELSE
  351.                         tinfotype.subtype:=0
  352.                     ENDIF
  353.                   CASE GA_G_INSERTAFTER
  354.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  355.                     StringF(pv,'\s',gstr.buffer)
  356.                     IF tinfotype.insertafter<>0 THEN DisposeLink(tinfotype.insertafter)
  357.                     IF EstrLen(pv)<>0
  358.                         tinfotype.insertafter:=String(EstrLen(pv))
  359.                         StrCopy(tinfotype.insertafter,pv,EstrLen(pv))
  360.                     ELSE
  361.                         tinfotype.insertafter:=0
  362.                     ENDIF
  363.                   CASE GA_G_ICONNAME
  364.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  365.                     StringF(pv,'\s',gstr.buffer)
  366.                     IF tinfotype.iconname<>0 THEN DisposeLink(tinfotype.iconname)
  367.                     IF EstrLen(pv)<>0
  368.                         tinfotype.iconname:=String(EstrLen(pv))
  369.                         StrCopy(tinfotype.iconname,pv,EstrLen(pv))
  370.                     ELSE
  371.                         tinfotype.iconname:=0
  372.                     ENDIF
  373.                   CASE GA_G_NAMEPATTERN
  374.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  375.                     StringF(pv,'\s',gstr.buffer)
  376.                     IF tinfotype.namepattern<>0 THEN DisposeLink(tinfotype.namepattern)
  377.                     IF EstrLen(pv)<>0
  378.                         tinfotype.namepattern:=String(EstrLen(pv))
  379.                         StrCopy(tinfotype.namepattern,pv,EstrLen(pv))
  380.                     ELSE
  381.                         tinfotype.namepattern:=0
  382.                     ENDIF
  383.                   CASE GA_G_OPTNAMEPATTERN
  384.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  385.                     StringF(pv,'\s',gstr.buffer)
  386.                     IF tinfotype.optnamepattern<>0 THEN DisposeLink(tinfotype.optnamepattern)
  387.                     IF EstrLen(pv)<>0
  388.                         tinfotype.optnamepattern:=String(EstrLen(pv))
  389.                         StrCopy(tinfotype.optnamepattern,pv,EstrLen(pv))
  390.                     ELSE
  391.                         tinfotype.optnamepattern:=0
  392.                     ENDIF
  393.                   CASE GA_G_COMPAREBYTES
  394.                     curcompbyte:=mes.code
  395.                     refresh:=TRUE
  396.                   CASE GA_G_COMPAREBYTESSTR
  397.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  398.                     nn:=p_GetAdrNode(tinfotype.comparebytes,curcompbyte)
  399.                     StringF(pv,'\s',gstr.buffer)
  400.                     IF nn.name<>0 THEN DisposeLink(nn.name)
  401.                     nn.name:=String(EstrLen(pv))
  402.                     StrCopy(nn.name,pv,EstrLen(pv))
  403.                     refresh:=TRUE
  404.                   CASE GA_G_SEARCHBYTES
  405.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  406.                     StringF(pv,'\s',gstr.buffer)
  407.                     IF tinfotype.searchbyte<>0 THEN DisposeLink(tinfotype.searchbyte)
  408.                     IF EstrLen(pv)<>0
  409.                         tinfotype.searchbyte:=String(EstrLen(pv))
  410.                         StrCopy(tinfotype.searchbyte,pv,EstrLen(pv))
  411.                     ELSE
  412.                         tinfotype.searchbyte:=0
  413.                     ENDIF
  414.                   CASE GA_G_SEARCHPATTERN
  415.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  416.                     StringF(pv,'\s',gstr.buffer)
  417.                     IF EstrLen(tinfotype.searchpattern)<>0 THEN DisposeLink(tinfotype.searchpattern)
  418.                     IF EstrLen(pv)<>0
  419.                         tinfotype.searchpattern:=String(EstrLen(pv))
  420.                         StrCopy(tinfotype.searchpattern,pv,EstrLen(pv))
  421.                     ELSE
  422.                         tinfotype.searchpattern:=0
  423.                     ENDIF
  424.                   CASE GA_G_MATCHPATTERN
  425.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  426.                     StringF(pv,'\s',gstr.buffer)
  427.                     IF tinfotype.matchpattern<>0 THEN DisposeLink(tinfotype.matchpattern)
  428.                     IF EstrLen(pv)<>0
  429.                         tinfotype.matchpattern:=String(EstrLen(pv))
  430.                         StrCopy(tinfotype.matchpattern,pv,EstrLen(pv))
  431.                     ELSE
  432.                         tinfotype.matchpattern:=0
  433.                     ENDIF
  434.                     CASE GA_G_COMMENT
  435.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  436.                     StringF(pv,'\s',gstr.buffer)
  437.                     IF tinfotype.comment<>0 THEN DisposeLink(tinfotype.comment)
  438.                     IF EstrLen(pv)<>0
  439.                         tinfotype.comment:=String(EstrLen(pv))
  440.                         StrCopy(tinfotype.comment,pv,EstrLen(pv))
  441.                     ELSE
  442.                         tinfotype.comment:=0
  443.                     ENDIF
  444.                   CASE GA_G_ADDTYPES
  445.                     p_LockListView(g_typelist,wip_window)
  446.                     tinfotype:=New(SIZEOF infotype)
  447.                     tinfotype.comment:=0
  448.                     tinfotype.subtype:=0
  449.                     tinfotype.insertafter:=0
  450.                     tinfotype.iconname:=0
  451.                     tinfotype.namepattern:=0
  452.                     tinfotype.optnamepattern:=0
  453.                     tinfotype.comparebytes:=p_InitList()
  454.                     tinfotype.searchbyte:=0
  455.                     tinfotype.searchpattern:=0
  456.                     tinfotype.matchpattern:=0
  457.                     p_AjouteNode(typelist,get_WhatView_string(MSGWHATISPREFS_NEWNODE),tinfotype)
  458.                     p_UnLockListView(g_typelist,wip_window,typelist)
  459.                     refresh:=TRUE
  460.                   CASE GA_G_DELTYPES
  461.                     p_LockListView(g_typelist,wip_window)
  462.                     /*curinfotype:=p_EnleveNode(typelist,curinfotype,TRUE,freeinfotype)*/
  463.                     curinfotype:=p_EnleveWINode(typelist,curinfotype)
  464.                     p_UnLockListView(g_typelist,wip_window,typelist)
  465.                     refresh:=TRUE
  466.                   CASE GA_G_ADDCOMPAREBYTES
  467.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  468.                     p_LockListView(g_comparebytes,wip_window)
  469.                     p_AjouteNode(tinfotype.comparebytes,get_WhatView_string(MSGWHATISPREFS_NEWNODE),0)
  470.                     p_UnLockListView(g_comparebytes,wip_window,tinfotype.comparebytes)
  471.                     refresh:=TRUE
  472.                   CASE GA_G_DELCOMPAREBYTES
  473.                     tinfotype:=p_GetAdrNode(typelist,curinfotype)
  474.                     p_LockListView(g_comparebytes,wip_window)
  475.                     curcompbyte:=p_EnleveNode(tinfotype.comparebytes,curcompbyte,0,0)
  476.                     p_UnLockListView(g_comparebytes,wip_window,tinfotype.comparebytes)
  477.                     refresh:=TRUE
  478.                   CASE GA_G_LOAD
  479.                     IF pv:=p_FileRequester(F_LOAD)
  480.                         /*p_LockListView(g_typelist,wip_window)*/
  481.                         typelist:=p_CleanTypeList(typelist)
  482.                         p_ReadSourceFile(pv)
  483.                         /*p_UnLockListView(g_typelist,wip_window,typelist)*/
  484.                         curinfotype:=0
  485.                         refresh:=TRUE
  486.                     ENDIF
  487.                   CASE GA_G_SAVE
  488.                     p_SaveSourceFile('s:filetypes')
  489.                   CASE GA_G_SAVEAS
  490.                     IF pv:=p_FileRequester(F_SAVE)
  491.                         /*p_LockListView(g_typelist,wip_window)*/
  492.                         p_SaveSourceFile(pv)
  493.                         /*p_UnLockListView(g_typelist,wip_window,typelist)*/
  494.                     ENDIF
  495.                   CASE GA_G_QUIT
  496.                     reelquit:=TRUE
  497.                   CASE GA_G_TYPESSTR
  498.                     nn:=p_GetAdrNode(typelist,curinfotype)
  499.                     StringF(pv,'\s',gstr.buffer)
  500.                     IF EstrLen(nn.name)<>0 THEN DisposeLink(nn.name)
  501.                     nn.name:=String(EstrLen(pv))
  502.                     StrCopy(nn.name,pv,EstrLen(pv))
  503.                     refresh:=TRUE
  504.               ENDSELECT
  505.        ENDSELECT
  506.        Gt_ReplyIMsg(mes)
  507.    ENDWHILE
  508.    IF refresh=TRUE THEN p_RenderwipWindow()
  509. ENDPROC
  510. /**/
  511. /**/
  512. /*"Application Procedures"*/
  513. /*"p_EnleveWINode(list;PTR TO lh,num)"*/
  514. PROC p_EnleveWINode(list:PTR TO lh,num)
  515.     DEF wn:PTR TO infotype
  516.     DEF n:PTR TO ln
  517.     DEF count=NIL,retour,newn:PTR TO ln
  518.     n:=list.head
  519.     WHILE n
  520.         wn:=n
  521.         IF count=num
  522.             IF n.succ<>0
  523.                 IF n.name THEN DisposeLink(n.name)
  524.                 IF wn.subtype THEN DisposeLink(wn.subtype)
  525.                 IF wn.insertafter THEN DisposeLink(wn.insertafter)
  526.                 IF wn.iconname THEN DisposeLink(wn.iconname)
  527.                 IF wn.namepattern THEN DisposeLink(wn.namepattern)
  528.                 IF wn.optnamepattern THEN DisposeLink(wn.optnamepattern)
  529.                 p_CleanList(wn.comparebytes,FALSE,0,LIST_REMOVE)
  530.                 IF wn.searchbyte THEN DisposeLink(wn.searchbyte)
  531.                 IF wn.searchpattern THEN DisposeLink(wn.searchpattern)
  532.                 IF wn.matchpattern THEN DisposeLink(wn.matchpattern)
  533.                 IF wn.comment THEN DisposeLink(wn.comment)
  534.             ENDIF
  535.             IF n.succ=0
  536.                 RemTail(list)
  537.                 retour:=num-1
  538.             ELSEIF n.pred=0
  539.                 RemHead(list)
  540.                 retour:=num
  541.                 newn:=p_GetAdrNode(list,num)
  542.                 list.head:=newn
  543.                 newn.pred:=0
  544.             ELSEIF (n.succ<>0) AND (n.pred<>0)
  545.                 Remove(n)
  546.                 retour:=num-1
  547.             ENDIF
  548.         ENDIF
  549.         INC count
  550.         n:=n.succ
  551.     ENDWHILE
  552.     RETURN retour
  553. ENDPROC
  554. /**/
  555. /*"readSourceFile(esource)"*/
  556. PROC p_ReadSourceFile(esource)
  557. /********************************************************************************
  558.  * Para     : NONE
  559.  * Return   : FALSE if error.
  560.  * Description  : Read the source file (.e).
  561.  *******************************************************************************/
  562.     DEF len,adr,buf,handle,flen=TRUE,a,p
  563.     DEF r_str[256]:STRING
  564.     DEF str_line[256]:STRING
  565.     DEF piv_str[256]:STRING
  566.     DEF procstr[256]:STRING,pos
  567.     DEF c
  568.     DEF myinfotype:PTR TO infotype
  569.     DEF iname[20]:STRING,pv[50]:STRING,buffer[50]:STRING,tt[50]:STRING
  570.     DEF test
  571.     dWriteF(['p_REadSourceFile() \s\n'],[esource])
  572.     IF (flen:=FileLength(esource))=-1 THEN RETURN FALSE
  573.     IF (buf:=New(flen+1))=NIL THEN RETURN FALSE
  574.     IF (handle:=Open(esource,1005))=NIL THEN RETURN FALSE
  575.     len:=Read(handle,buf,flen)
  576.     Close(handle)
  577.     IF len<1 THEN RETURN FALSE
  578.     adr:=buf
  579.     FOR a:=0 TO len-1
  580.         IF buf[a]=10
  581.             StrCopy(r_str,adr,a-p)
  582.             str_line:=TrimStr(r_str)
  583.             IF EstrLen(str_line)<>0
  584.                 IF (Not(test:=StrCmp(str_line,'##',2)) OR (test:=InStr(str_line,'#>',0)))
  585.                     FOR c:=0 TO 11
  586.                         IF StrCmp(str_line,motcle[c],StrLen(motcle[c]))
  587.                             SELECT c
  588.                                 CASE 0
  589.                                     myinfotype:=New(SIZEOF infotype)
  590.                                     myinfotype.comparebytes:=0
  591.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  592.                                     StrCopy(iname,TrimStr(pv),ALL)
  593.                                     myinfotype.comment:=0
  594.                                     myinfotype.subtype:=0
  595.                                     myinfotype.insertafter:=0
  596.                                     myinfotype.iconname:=0
  597.                                     myinfotype.namepattern:=0
  598.                                     myinfotype.optnamepattern:=0
  599.                                     myinfotype.comparebytes:=p_InitList()
  600.                                     myinfotype.searchbyte:=0
  601.                                     myinfotype.searchpattern:=0
  602.                                     myinfotype.matchpattern:=0
  603.                                 CASE 1
  604.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  605.                                     buffer:=TrimStr(pv)
  606.                                     myinfotype.comment:=String(EstrLen(buffer))
  607.                                     StrCopy(myinfotype.comment,buffer,EstrLen(buffer))
  608.                                 CASE 2
  609.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  610.                                     buffer:=TrimStr(pv)
  611.                                     myinfotype.subtype:=String(EstrLen(buffer))
  612.                                     StrCopy(myinfotype.subtype,buffer,EstrLen(buffer))
  613.                                 CASE 3
  614.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  615.                                     buffer:=TrimStr(pv)
  616.                                     myinfotype.insertafter:=String(EstrLen(buffer))
  617.                                     StrCopy(myinfotype.insertafter,buffer,EstrLen(buffer))
  618.                                 CASE 4
  619.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  620.                                     buffer:=TrimStr(pv)
  621.                                     myinfotype.iconname:=String(EstrLen(buffer))
  622.                                     StrCopy(myinfotype.iconname,buffer,EstrLen(buffer))
  623.                                 CASE 5
  624.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  625.                                     buffer:=TrimStr(pv)
  626.                                     myinfotype.namepattern:=String(EstrLen(buffer))
  627.                                     StrCopy(myinfotype.namepattern,buffer,EstrLen(buffer))
  628.                                 CASE 6
  629.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  630.                                     buffer:=TrimStr(pv)
  631.                                     myinfotype.optnamepattern:=String(EstrLen(buffer))
  632.                                     StrCopy(myinfotype.optnamepattern,buffer,EstrLen(buffer))
  633.                                 CASE 7
  634.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  635.                                     buffer:=TrimStr(pv)
  636.                                     p_AjouteNode(myinfotype.comparebytes,buffer,0)
  637.                                 CASE 8
  638.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  639.                                     buffer:=TrimStr(pv)
  640.                                     myinfotype.searchbyte:=String(EstrLen(buffer))
  641.                                     StrCopy(myinfotype.searchbyte,buffer,EstrLen(buffer))
  642.                                 CASE 9
  643.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  644.                                     buffer:=TrimStr(pv)
  645.                                     myinfotype.searchpattern:=String(EstrLen(buffer))
  646.                                     StrCopy(myinfotype.searchpattern,buffer,EstrLen(buffer))
  647.                                 CASE 10
  648.                                     MidStr(pv,str_line,StrLen(motcle[c]),ALL)
  649.                                     buffer:=TrimStr(pv)
  650.                                     myinfotype.matchpattern:=String(EstrLen(buffer))
  651.                                     StrCopy(myinfotype.matchpattern,buffer,EstrLen(buffer))
  652.                                 CASE 11
  653.                                     p_AjouteNode(typelist,iname,myinfotype)
  654.                             ENDSELECT
  655.                         ENDIF
  656.                     ENDFOR
  657.                 ENDIF
  658.                 StrCopy(str_line,'',ALL)
  659.             ENDIF
  660.             p:=a+1
  661.             adr:=buf+a+1
  662.         ENDIF
  663.     ENDFOR
  664.     Dispose(buf)
  665.     RETURN TRUE
  666. ENDPROC
  667. /**/
  668. /*"p_SaveSourceFile(s)"*/
  669. PROC p_SaveSourceFile(s)
  670.     DEF n:PTR TO ln
  671.     DEF tn:PTR TO infotype
  672.     DEF h
  673.     DEF cl:PTR TO lh
  674.     DEF cn:PTR TO ln
  675.     dWriteF(['p_SaveSourceFile \s\n'],[s])
  676.     IF (h:=Open(s,1006))=NIL THEN RETURN FALSE
  677.     stdout:=h
  678.     WriteF('##   Syntax\n')
  679.     WriteF('##   TYPE "Src Ada"\n')
  680.     WriteF('##       SUBTYPE "Text"\n')
  681.     WriteF('##       INSERTAFTER "Script"\n')
  682.     WriteF('##       ICONNAME "def_Src Ada"  # path internaly expanded to "ENV:Sys/def_Src Ada.info"\n')
  683.     WriteF('##       NAMEPATTERN *.ada\n')
  684.     WriteF('##   # or OPTNAMEPATTERN *.ada\n')
  685.     WriteF('##   # The 4 upper lines are optional but order MUST be kept.\n')
  686.     WriteF('##   # Lower lines are for information about syntax, and if used order MUST be kept.\n')
  687.     WriteF('##       # COMPAREBYTE OFFSET BYTES\n')
  688.     WriteF('##       COMPAREBYTE 12 $ABADCAFE    # hex bytes, offset decimal\n')
  689.     WriteF('##       COMPAREBYTE $23 "Coucou"    # string bytes, offset in hex\n')
  690.     WriteF('##       SEARCHBYTE  "Salut"\n')
  691.     WriteF('##       SEARCHBYTE  $DEADBEEF\n')
  692.     WriteF('##       SEARCHPATTERN [CASE] "ST-??"\n')
  693.     WriteF('##       MATCHPATTERN [CASE] 45 "ST-??"\n')
  694.     WriteF('##   ENDTYPE\n')
  695.     WriteF('########################################################\n')
  696.     n:=typelist.head
  697.     WHILE n
  698.         IF n.succ<>0
  699.             tn:=n
  700.             WriteF('TYPE \s\n',n.name)
  701.             IF tn.comment<>0 THEN        WriteF('#> \s\n',tn.comment)
  702.             IF tn.subtype<>0 THEN        WriteF('    SUBTYPE \s\n',tn.subtype)
  703.             IF tn.insertafter<>0 THEN    WriteF('    INSERTAFTER \s\n',tn.insertafter)
  704.             IF tn.iconname<>0 THEN       WriteF('    ICONNAME \s\n',tn.iconname)
  705.             IF tn.namepattern<>0 THEN    WriteF('    NAMEPATTERN \s\n',tn.namepattern)
  706.             IF tn.optnamepattern<>0 THEN WriteF('    OPTNAMEPATTERN \s\n',tn.optnamepattern)
  707.             cl:=tn.comparebytes
  708.             IF p_EmptyList(tn.comparebytes)<>-1
  709.                 cn:=cl.head
  710.                 WHILE cn
  711.                     IF cn.succ<>0
  712.                         WriteF('    COMPAREBYTE \s\n',cn.name)
  713.                     ENDIF
  714.                     cn:=cn.succ
  715.                 ENDWHILE
  716.             ENDIF
  717.             IF tn.searchbyte<>0 THEN    WriteF('    SEARCHBYTE \s\n',tn.searchbyte)
  718.             IF tn.searchpattern<>0 THEN WriteF('    SEARCHPATTERN \s\n',tn.searchpattern)
  719.             IF tn.matchpattern<>0  THEN WriteF('    MATCHPATTERN \s\n',tn.matchpattern)
  720.             WriteF('ENDTYPE\n\n')
  721.         ENDIF
  722.         n:=n.succ
  723.     ENDWHILE
  724.     IF h THEN Close(h)
  725. ENDPROC
  726. /**/
  727. /*"p_CleanTypeList(ptr_list:PTR TO lh)"*/
  728. PROC p_CleanTypeList(ptr_list:PTR TO lh)
  729. /*===============================================================================
  730.  = Para         : Address of a list
  731.  = Return       : NONE.
  732.  = Description  : Write in stdout the list data and nodes.
  733.  ==============================================================================*/
  734.     DEF w_node:PTR TO ln
  735.     DEF c
  736.     DEF mit:PTR TO infotype
  737.     dWriteF(['p_CleanTypeList()\n'],0)
  738.     w_node:=ptr_list.head
  739.     WHILE w_node
  740.         IF w_node.succ<>0
  741.             mit:=w_node
  742.             dWriteF(['\h ','\h ','\h ','\h ','\h ','\h ','\h ','\h ','\h\n'],
  743.                     [mit.subtype,mit.insertafter,mit.iconname,
  744.                      mit.namepattern,mit.optnamepattern,
  745.                      mit.searchbyte,mit.searchpattern,
  746.                      mit.matchpattern,mit.comment])
  747.             IF mit.subtype<>0 THEN DisposeLink(mit.subtype)
  748.             IF mit.insertafter<>0 THEN DisposeLink(mit.insertafter)
  749.             IF mit.iconname<>0 THEN DisposeLink(mit.iconname)
  750.             IF mit.namepattern<>0 THEN DisposeLink(mit.namepattern)
  751.             IF mit.optnamepattern<>0 THEN DisposeLink(mit.optnamepattern)
  752.             p_CleanList(mit.comparebytes,0,0,LIST_REMOVE)
  753.             IF mit.searchbyte<>0 THEN DisposeLink(mit.searchbyte)
  754.             IF mit.searchpattern<>0 THEN DisposeLink(mit.searchpattern)
  755.             IF mit.matchpattern<>0 THEN DisposeLink(mit.matchpattern)
  756.             IF mit.comment<>0 THEN DisposeLink(mit.comment)
  757.             IF w_node.succ=0 THEN RemTail(ptr_list)
  758.             IF w_node.pred=0 THEN RemHead(ptr_list)
  759.             IF (w_node.succ<>0) AND (w_node.pred<>0) THEN Remove(w_node)
  760.             IF w_node.name THEN DisposeLink(w_node.name)
  761.         ENDIF
  762.         w_node:=w_node.succ
  763.     ENDWHILE
  764.     ptr_list.tail:=0
  765.     ptr_list.head:=ptr_list.tail
  766.     ptr_list.tailpred:=ptr_list.head
  767.     ptr_list.type:=0
  768.     ptr_list.pad:=0
  769.     RETURN ptr_list
  770. ENDPROC
  771. /**/
  772. /*"p_InitWIP()"*/
  773. PROC p_InitWIP()
  774.     dWriteF(['p_InitWIP()\n'],0)
  775.     motcle:=['TYPE','#>','SUBTYPE','INSERTAFTER',
  776.              'ICONNAME','NAMEPATTERN','OPTNAMEPATTERN',
  777.              'COMPAREBYTE','SEARCHBYTE','SEARCHPATTERN',
  778.              'MATCHPATTERN','ENDTYPE']
  779.     typelist:=p_InitList()
  780.     freeinfotype:=[DISL,14,DISL,18,DISL,22,DISL,26,DISL,30,DISP,34,DISL,38,DISL,42,DISL,46,DISL,50,DISE]
  781. ENDPROC
  782. /**/
  783. /*"p_FileRequester(t)"*/
  784. PROC p_FileRequester(t) 
  785.     DEF req:PTR TO filerequestr
  786.     DEF f=FALSE
  787.     DEF tag,rr=TRUE
  788.     DEF source[256]:STRING
  789.     DEF rstr[256]:STRING
  790.     dWriteF(['p_FileRequester()\n'],0)
  791.     IF t=F_LOAD
  792.         tag:=[ASL_HAIL,get_WhatView_string(MSGWHATISPREFS_REQ_HAILLOAD),ASL_OKTEXT,get_WhatView_string(MSGWHATISPREFS_LOAD),ASL_CANCELTEXT,get_WhatView_string(MSGWHATISPREFS_REQ_CANCEL),
  793.               ASL_FILE,'filetypes',ASL_DIR,'s:',TAG_DONE]
  794.     ELSE
  795.         tag:=[ASL_FUNCFLAGS,FILF_SAVE,ASL_HAIL,get_WhatView_string(MSGWHATISPREFS_REQ_HAILSAVE),ASL_OKTEXT,get_WhatView_string(MSGWHATISPREFS_SAVE),ASL_CANCELTEXT,get_WhatView_string(MSGWHATISPREFS_REQ_CANCEL),
  796.               ASL_FILE,'filetypes',ASL_DIR,'s:',TAG_DONE]
  797.  
  798.         f:=TRUE
  799.     ENDIF
  800.     IF req:=AllocAslRequest(ASL_FILEREQUEST,tag)
  801.         IF RequestFile(req)
  802.             AddPart(req.dir,'',256)
  803.             StringF(source,'\s\s',req.dir,req.file)
  804.             IF t=F_LOAD 
  805.             ENDIF
  806.         ELSE
  807.             rr:=FALSE
  808.         ENDIF
  809.         FreeAslRequest(req)
  810.         IF rr=FALSE THEN RETURN rr
  811.     ENDIF
  812.     StrCopy(rstr,source,ALL)
  813.     RETURN rstr
  814. ENDPROC
  815. /**/
  816. /**/
  817. /*"main()"*/
  818. PROC main() HANDLE 
  819.     DEF testmain
  820.     tattr:=['topaz.font',8,0,0]:textattr
  821.     localebase:=OpenLibrary('locale.library',0)
  822.     open_WhatView_catalog(NIL,NIL)
  823.     p_DoReadHeader({banner})
  824.     IF (testmain:=p_OpenLibraries())<>ER_NONE THEN Raise(testmain)
  825.     p_InitWIP()
  826.     p_ReadSourceFile('s:filetypes')
  827.     IF (testmain:=p_SetUpScreen())<>ER_NONE THEN Raise(testmain)
  828.     IF (testmain:=p_InitwipWindow())<>ER_NONE THEN Raise(testmain)
  829.     IF (testmain:=p_OpenwipWindow())<>ER_NONE THEN Raise(testmain)
  830.     REPEAT
  831.         p_LookAllMessage()
  832.     UNTIL reelquit=TRUE
  833.     Raise(ER_NONE)
  834. EXCEPT
  835.     IF wip_window THEN p_RemwipWindow()
  836.     IF screen THEN p_SetDownScreen()
  837.     p_CloseLibraries()
  838.     SELECT exception
  839.         CASE ER_LOCKSCREEN; WriteF(get_WhatView_string(MSGERWHATVIEW_ER_LOCKSCREEN))
  840.         CASE ER_VISUAL;     WriteF(get_WhatView_string(MSGERWHATVIEW_ER_VISUAL))
  841.         CASE ER_CONTEXT;    WriteF(get_WhatView_string(MSGERWHATVIEW_ER_CONTEXT))
  842.         CASE ER_MENUS;      WriteF(get_WhatView_string(MSGERWHATVIEW_ER_MENUS))
  843.         CASE ER_GADGET;     WriteF(get_WhatView_string(MSGERWHATVIEW_ER_GADGET))
  844.         CASE ER_WINDOW;     WriteF(get_WhatView_string(MSGERWHATVIEW_ER_WINDOW))
  845.     ENDSELECT
  846.     close_WhatView_catalog()
  847.     IF localebase THEN CloseLibrary(localebase)
  848. ENDPROC
  849. /**/
  850.  
  851.